package model

import (
	"jgt-oper/src/schema"
)

// IMenu 菜单管理
type IMenu interface {
	// 查询分页数据
	QueryPage(params schema.MenuQueryParam, pageIndex, pageSize uint) (int64, []*schema.Menu, error)
	// 查询选择数据
	QuerySelect(params schema.MenuSelectParam) ([]*schema.MenuSelect, error)
	// 根据上级查询数据
	QueryByParentIDOrderLevelCode(parentID string) ([]*schema.Menu, error)
	// 精确查询数据
	Get(recordID string) (*schema.Menu, error)
	// 创建数据
	Create(item *schema.Menu) error
	// 更新数据
	Update(recordID string, info map[string]interface{}) error
	// 删除数据
	Delete(recordID string) error
	// 更新分级码数据
	UpdateLevelCode(src, target string) error
	// 检查编号是否存在
	CheckCode(code string, typ int, parentID string) (bool, error)
	// 检查下级菜单
	CheckChild(parentID string) (bool, error)
	// 根据编号和类型查询数据
	GetByCodeAndType(code string, typ int) (*schema.Menu, error)
	// 根据分级码查询下级数据
	QueryChildsByLevelCode(levelCode string) ([]*schema.Menu, error)
	// 根据分级码和ID列表查询下级分级码列表
	QueryLevelCodesByLevelCodeAndIDs(levelCode string, recordIDs []string) ([]string, error)
	// 根据分级码查询数据
	QueryByLevelCodes(levelCodes []string) ([]*schema.Menu, error)
	// 根据ID列表查询菜单数据
	QueryByIDs(recordIDs []string) ([]*schema.Menu, error)
}
